package com.huaji.learn.helper;

import static com.huaji.learn.model.constrants.DBConstraint.TABLE_NOTE;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 数据库帮助类
 */
public class DBHelper extends SQLiteOpenHelper {

    /**
     * 数据库库名
     */
    private static final String DATABASE_NAME = "db_note";
    /**
     * 数据库版本
     */
    private static final int DATABASE_VERSION = 1;

    /**
     * 建表语句
     *
     * TABLE_NOTE 表
     * 主键是 ID INTEGER类型，自增
     * 其余字段：
     *  CREATE_TIME 创建时间 文本
     *  CREATE_WEATHER 创建时的天气 文本
     *  F_B_REMIND 费曼-已回忆 整形 1-True， 0-False
     *  F_B_REPEAT 费曼-已复述 整形 1-True， 0-False
     *  F_B_RETHINK 费曼-已回想 整形 1-True， 0-False
     *  F_FEELINGS 费曼-感想 文本
     *  F_FEYNMAN_COUNT 费曼-费曼次数 整型
     *  F_REVIEW_COUNT 费曼-复习次数 整型
     *  E_DAY_LIST 艾宾浩斯曲线 文本 用逗号分隔的字符串
     *  C_REDUCE 康奈尔-Reduce 文本
     *  C_RECITE 康奈尔-Recite 文本
     *  C_RECORD 康奈尔-Record 文本
     *  C_REFLECT 康奈尔-Reflect 文本
     *  M_MEMORY 联想记忆法 文本
     */
    private static final String CREATE_TABLE_NOTE =
            "CREATE TABLE IF NOT EXISTS " + TABLE_NOTE + " (" +
                    "ID" + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    "CREATE_TIME" + " TEXT, " +
                    "CREATE_WEATHER" + " TEXT, " +
                    "F_B_REMIND" + " INTEGER, " +
                    "F_B_REPEAT" + " INTEGER, " +
                    "F_B_RETHINK" + " INTEGER, " +
                    "F_FEELINGS" + " TEXT, " +
                    "F_FEYNMAN_COUNT" + " INTEGER, " +
                    "F_REVIEW_COUNT" + " INTEGER, " +
                    "E_DAY_LIST" + " TEXT, " +
                    "C_REDUCE" + " TEXT, " +
                    "C_RECITE" + " TEXT, " +
                    "C_RECORD" + " TEXT, " +
                    "C_REFLECT" + " TEXT, " +
                    "M_MEMORY" + " TEXT) ;";

    /**
     * 构造方法
     * @param context 上下文
     */
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    /**
     * 重写 SQLiteOpenHelper 的生命周期方法，创建Helper时建表
     * @param db 数据库实例
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_NOTE);
    }

    /**
     * 重写 SQLiteOpenHelper 的生命周期方法，数据库版本更新调用
     * @param db 数据库实例
     * @param oldVersion 旧的版本号
     * @param newVersion 新的版本号
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 可以根据需要进行数据库升级的操作
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NOTE);
        // TODO 数据备份
        onCreate(db);
    }
}
